﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;
using vudu.Logica.Excepciones;
using System.Data;
using vudu.EnlaceDatos.SqlServer;
using System.Data.SqlClient;

namespace vudu.PaginasWeb.G5Profesor
{
    public partial class AgregarProfesorUniversidad : System.Web.UI.Page
    {

        string espacioMaxCarga = "50000", espacioUtilizado = "0";
        Escuela miEscuelaActual = new Escuela();
        SqlServerProfesor _miConsulta = new SqlServerProfesor();


        protected void Page_Load(object sender, EventArgs e)
        {

            try
            {
                //OBJETO SESSION 
                string miRol = (string)Session["rol"];
                if (miRol != "Escuela")
                   Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
                 miEscuelaActual = (Escuela)Session["Usuario"];
                 nombreEscuela.Text = "Escuela: " + miEscuelaActual.NombreEscuela;
            }
            catch (Exception)
            {
                miEscuelaActual = new Escuela();
                miEscuelaActual = ConsultarEscuela(1);
                nombreEscuela.Text = miEscuelaActual.NombreEscuela;
            }
            //Miga Actual
            MigaActual.Text = "Agregar Profesor";
            Labelnombre.Visible = false;
            LabelApellido.Visible = false;
            Labelcedula.Visible = false;
            Labelmail.Visible = false;
            Labelcrn.Visible = false;
            LabelfechaNac.Visible = false;
            LabelinicioContrato.Visible = false;
            LabelfinContrato.Visible = false;
            Labeltlf.Visible = false;

            if(!IsPostBack)
            {
                llenarEscuela();
                llenarContrato();
                llenarSexo();
                llenarCargo();
                AvisoError.Visible = false;
                TextCedula.Text = "";
                TextNombre.Text = "";
                TextApellido.Text = "";
                TextEmail.Text = "";
                TextCRN.Text = "";
                TextTelefono.Text = "";
                miEscuelaActual = new Escuela();            

               

                Conexion miConexion = new Conexion();

                try
                {
                    miConexion.AbrirConexionBd();
                    miConexion.CerrarConexionBd();
                }
                catch (Exception)
                {
                    AvisoError.Text = "Operacion Fallida: Error en Conexion Con Base de Datos";
                    AvisoError.CssClass = "transaccionFallida";
                    AvisoError.ForeColor = System.Drawing.Color.Red;
                    AvisoError.Visible = true;
                }

            }

        }
    

        protected void llenarSexo()
        {
            DropSexo.Items.Add("Seleccion Sexo");
            DropSexo.Items.Add("M");
            DropSexo.Items.Add("F");
        }

        protected void llenarCargo()
        {
            DropCargo.Items.Add("Seleccion Cargo");
            DropCargo.Items.Add("Jefe de Catedra");
            DropCargo.Items.Add("Enlace DTI");
            DropCargo.Items.Add("Coord. Ciclo Básico");
            DropCargo.Items.Add("Coord. Investigación");
            DropCargo.Items.Add("Profesor");

        }

        protected List<Escuela> miListaEscuela()
        {
            SqlServerEscuela consultaEscuela = new SqlServerEscuela();
            

            // se instancia un objeto de tipo conexion y otro de tipo sqlComand
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            SqlDataReader reader = null;
            List<Escuela> listaEscuela = new List<Escuela>();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.Text;

            try
            {
                //se abre una conexion a la bd vudu
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                // Se indica el Query
                command.CommandText = "SELECT id_escuela,nombre FROM Escuela";
                command.CommandTimeout = 10;

                
                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Escuela miEscuela = new Escuela();
                    miEscuela.IdEscuela = reader.GetInt32(0);
                    miEscuela.NombreEscuela= reader["nombre"].ToString();

                    listaEscuela.Add(miEscuela);
                }

                reader.Close();
                miConexion.CerrarConexionBd();

                
            }
            catch(Exception)
            {

            }
            
            return listaEscuela;
        }

        protected void llenarEscuela()
        {
            List<Escuela> miEscuela = new List<Escuela>();

            miEscuela = miListaEscuela();

            seleccionarEscuela.Items.Add("Selecciona Tu Escuela");

            try
            {
                seleccionarEscuela.Items.Add(miEscuelaActual.NombreEscuela);
                seleccionarEscuela.Items[1].Value = miEscuelaActual.IdEscuela.ToString();
            }
            catch (Exception)
            {

                int i = 1;
                foreach (Escuela escuela in miEscuela)
                {
                    seleccionarEscuela.Items.Add(escuela.NombreEscuela);
                    seleccionarEscuela.Items[i].Value = escuela.IdEscuela.ToString();
                    i++;

                }
            }
        }

        protected void llenarContrato()
        {
            contratoDrop.Items.Add("Seleccione Tipo de Contrato");
            contratoDrop.Items.Add("Completo");
            contratoDrop.Items.Add("Parcial");
        }

        protected bool insertarDatos(string values,string values2)
        {
            Conexion miConexion = new Conexion();
            SqlCommand comando = new SqlCommand();
            SqlCommand comando2 = new SqlCommand();
            String sql = "INSERT INTO Profesor (id_cedula,nombreProfesor,apellidoProfesor,crnProfesor,fechaNac,sexoProfesor,";
            sql = sql + "telefonoProfesor,contratoProfesor,estadoProfesor,espacioMaxCarga,espacioUtilizado,emailProfesor)";
            sql = sql + " VALUES " + values;
            comando.CommandText = sql;
            comando.Connection = miConexion.ObjetoConexion();

            String sql2 = "INSERT INTO EscuelaProfesor(fk_Escuela, fk_Profesor, fechaInicio, fechaFin, cargo)";
            sql2 = sql2 + " VALUES " + values2; 
            comando2.CommandText = sql2;
            comando2.Connection = miConexion.ObjetoConexion();
            try
            {
                miConexion.AbrirConexionBd();
                comando.ExecuteNonQuery();
                comando2.ExecuteNonQuery();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }

        }

        protected string recuperarDatos()
        {
            string values,status,nacimiento,inicioContrato,finContrato,miEscuela, values2;

            nacimiento = "'"+TextFechaNac.Text+"'";
            inicioContrato = "'"+TextInicioContrato.Text+"'";
            finContrato = "'" + TextFinContrato.Text + "'";
            miEscuela = seleccionarEscuela.SelectedValue.ToString();

            /*if (seleccionarEscuela.Text == "Ninguna")
                status = "INACTIVO";
            else*/
                status = "Activo";

            values = "(" + TextCedula.Text + ",'" + TextNombre.Text + "','" + TextApellido.Text + "'," + TextCRN.Text + "," + nacimiento + ",'" + DropSexo.Text + "','" + TextTelefono.Text + "','";
            values = values + contratoDrop.Text + "','" + status + "'," + espacioMaxCarga + "," + espacioUtilizado +",'"+TextEmail.Text+"')";

            values2 = "("+miEscuela+","+TextCedula.Text+","+inicioContrato+","+finContrato+",'"+DropCargo.Text+ "')";

            if (!insertarDatos(values,values2))
            {
                AvisoError.Text = "Transacción Fallida: Posiblemente Datos Duplicados o Formato Incorrecto de valores Númericos.";
                AvisoError.CssClass = "transaccionFallida";
                AvisoError.ForeColor = System.Drawing.Color.Red;
                AvisoError.Visible = true;
            }
            else
            {
                AvisoError.Text = "El Profesor se registro con exito";
                AvisoError.CssClass = "transaccionExitosa";
                AvisoError.ForeColor = System.Drawing.Color.Green;
                AvisoError.Visible = true;
                limpiarTextBox();
                DropCargo.ClearSelection();
                DropSexo.ClearSelection();
                contratoDrop.ClearSelection();
                seleccionarEscuela.ClearSelection();
                
            }

            return values;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {                       

            if (!validarCampos() && !errorDropDownList() &&!errorValorNumerico() ) 
            {

                try
                {
                    recuperarDatos();
                }
                catch (Exception)
                {
                    AvisoError.Text = "Error en Conexion Con Base de Datos";
                    AvisoError.CssClass = "transaccionFallida";
                    AvisoError.ForeColor = System.Drawing.Color.Red;
                    AvisoError.Visible = true;
                }
            }

        }

        protected bool errorDropDownList()
        {
            bool error = false;

            if (contratoDrop.Text == "Seleccione Tipo de Contrato")
            {
                error = true;
            }
            else if (DropSexo.Text == "Seleccion Sexo")
            {
                error = true;
            }
            else if(DropCargo.Text == "Seleccion Cargo")
            {
                error = true;
            }
            else if (seleccionarEscuela.Text == "Selecciona Tu Escuela")
            {
                error = false;
            }

            if (error)
            {
                AvisoError.Text = "Datos Incompletos.";
                AvisoError.ForeColor = System.Drawing.Color.Red;
                AvisoError.Visible = true;
            }

            return error;

        }

        protected bool errorValorNumerico()
        {

            try
            {

                Int32.Parse(TextCedula.Text);
            }
            catch (Exception)
            {
                AvisoError.Text = "Operacion Fallida: Datos Incorrectos en Cédula";
                AvisoError.CssClass = "transaccionFallida";
                AvisoError.ForeColor = System.Drawing.Color.Red;
                AvisoError.Visible = true;

                return true;
            }

            try
            {

                Int32.Parse(TextCRN.Text);
            }
            catch (Exception)
            {
                AvisoError.Text = "Operacion Fallida: Datos Incorrectos en CRN";
                AvisoError.CssClass = "transaccionFallida";
                AvisoError.ForeColor = System.Drawing.Color.Red;
                AvisoError.Visible = true;

                return true;
            }
            return false;
        }

        protected void BotonAnterior_Click(object sender, EventArgs e)
        {
            Response.Redirect("AgregarProfesorPrincipal.aspx");
        }

        protected bool validarCampos()
        {
            bool error = false;

            if (TextNombre.Text == "")
            {
                Labelnombre.Text = "Debe Ingresar Dato";
                Labelnombre.Visible = true;
                Labelnombre.ForeColor = System.Drawing.Color.Red;
                error = true;
            }
            if (TextApellido.Text == "")
            {
                LabelApellido.Text = "Debe Ingresar Dato";
                LabelApellido.Visible = true;
                LabelApellido.ForeColor = System.Drawing.Color.Red;
                error = true;
            }
            if (TextCedula.Text == "")
            {
                Labelcedula.Text = "Debe Ingresar Dato";
                Labelcedula.Visible = true;
                Labelcedula.ForeColor = System.Drawing.Color.Red;
                error = true;
            }
            if (TextTelefono.Text == "")
            {
                Labeltlf.Text = "Debe Ingresar Dato";
                Labeltlf.Visible = true;
                Labeltlf.ForeColor = System.Drawing.Color.Red;
                error = true;
            }
            if (TextEmail.Text == "")
            {
                Labelmail.Text = "Debe Ingresar Dato";
                Labelmail.Visible = true;
                Labelmail.ForeColor = System.Drawing.Color.Red;
                error = true;
            }
            if (TextFechaNac.Text == "")
            {
                LabelfechaNac.Text = "Debe Ingresar Dato";
                LabelfechaNac.Visible = true;
                LabelfechaNac.ForeColor = System.Drawing.Color.Red;
                error = true;
            }
            if (TextCRN.Text == "")
            {
                Labelcrn.Text = "Debe Ingresar Dato";
                Labelcrn.Visible = true;
                Labelcrn.ForeColor = System.Drawing.Color.Red;
                error = true;
            }
            if (TextInicioContrato.Text == "")
            {
                LabelinicioContrato.Text = "Debe Ingresar Dato";
                LabelinicioContrato.Visible = true;
                LabelinicioContrato.ForeColor = System.Drawing.Color.Red;
                error = true;
            }
            if (TextFinContrato.Text == "")
            {
                LabelfinContrato.Text = "Debe Ingresar Dato";
                LabelfinContrato.Visible = true;
                LabelfinContrato.ForeColor = System.Drawing.Color.Red;
                error = true;
            }

            return error;
        }

        protected void regresar_Click(object sender, EventArgs e)
        {
            Response.Redirect("AgregarProfesorPrincipal.aspx");
        }

        protected void limpiarTextBox()
        {
            TextNombre.Text = "";
            TextApellido.Text = "";
            TextCedula.Text = "";
            TextCRN.Text = "";
            TextEmail.Text = "";
            TextFechaNac.Text = "";
            TextTelefono.Text = "";
            TextInicioContrato.Text = "";
            TextFinContrato.Text = "";

        }

        public Escuela ConsultarEscuela(int id_escuela)
        {
            Conexion conex = new Conexion();
            Escuela miEscuela = new Escuela();
            SqlCommand comando = new SqlCommand();
            comando.CommandText = "SELECT * FROM Escuela WHERE id_Escuela = " + id_escuela.ToString();
            comando.CommandTimeout = 10;
            comando.Connection = conex.ObjetoConexion();

            try
            {
                conex.AbrirConexionBd();
                SqlDataReader reader = comando.ExecuteReader();

                if (reader.Read())
                {
                    miEscuela = new Escuela();
                    miEscuela.IdEscuela = reader.GetInt32(0);
                    miEscuela.NombreEscuela = reader["nombre"].ToString();
                }


                return miEscuela;

            }
            catch (Exception)
            {
                return null;
            }
            finally
            {
                conex.CerrarConexionBd();
            }


        }
      
    }
}